Field of the Invention
The invention generally relates to optimizing messaging systems, and, more specifically, to techniques for asynchronous, centralized analysis and optimization of server responses to client requests in a client/server architecture.
Description of Background Art
As is well known in conventional client/server architectures, clients request content and other resources from servers. Often such requests are transmitted as messages over a network such as the Internet, via various well-known protocols such as TCP/IP and HTTP.
In many cases, messages are transmitted in a manner that is suboptimal, requiring content to be downloaded from multiple sources, and reducing efficiency and performance in other ways. For example, many HTML pages contain links to multiple external resources including, for example JavaScript code, Cascading Style Sheets (CSS), and images in various formats. Developers encapsulate code and data within resources because it promotes reuse, eases maintenance, and allows for common resources to be downloaded once, stored in browser cache and then used on multiple pages. In many cases, upon receiving content containing such links, a client issues a number of additional requests in order to obtain the resources specified by the links on the initial content page.
Many factors can have a negative performance impact on the downloading and rendering of the page. For example, increasing the number of resources used in a page increases the overhead associated with downloading external resources. Each resource must often be requested separately, which increases download times and reduces efficiency. Also, many standard web browsers generally only open a limited number of connections per server (such as two per server), resulting in blocking and waiting. Compounding this problem is the fact that most first time page requests are from browsers that have not previously cached the required resources.
Website authors and developers can improve their applications and content to optimize server responses, for example by reducing resource requests. However, such efforts require such authors and developers to actively modify their code, a process that can be burdensome. In addition, some authors and developers may not be well-versed in the appropriate techniques for improving code performance. Existing systems do not provide any way to automatically modify code to reduce resource requests without requiring developers and authors to modify their applications or content.
Existing attempts to optimize message are often of limited utility. Many conventional messaging system end-points are designed to create, send, receive, and interpret messages for a specific purpose. In most cases these end-points are designed with the specific goals of the end-user in mind and are optimized for this purpose. However, optimization needs often emerge only after an application is already in production, making previous optimization efforts obsolete. In addition, best practices for optimization evolve and must often be applied retroactively, requiring significant effort and expense.
In a public messaging system based on slowly changing standards, each sender and receiver competes for available transport resources using the flags and queues defined by the protocol regardless of purpose. Existing “in-path” acceleration devices generally focus on non-intrusive mechanisms that perform generic, low-level optimizations, such as message compression. Existing methods are often bound by the rules of the slowly changing protocol and are not tailored for understanding and optimizing the more customized application contexts that evolve rapidly as new development techniques are implemented.
What is needed, therefore, is a system and method for optimizing server responses to client requests while minimizing the burden on website authors and developers. What is further needed is an optimization system and method that is extensible and asynchronous, and capable of operating in an automated fashion. What is further needed is an optimization system and method that is appropriate for all messages to which the optimizations are applied, and that is dynamic enough to adapt to changing circumstances. What is further needed is a system and method that provides such advantages without requiring developers and authors to modify their applications or content.